﻿<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../helpproject.xsl" ?>
<topic template="Default" lasteditedby="Geert" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../helpproject.xsd">
  <title translate="true">Understanding the most important classes</title>
  <body>
    <header>
      <para styleclass="Heading1"><text styleclass="Heading1" translate="true">Understanding the most important classes</text></para>
    </header>
    <para styleclass="Normal"><text styleclass="Normal" translate="true">Catel has a lot of classes, and it can be easy to get lost in the large amount of classes. Therefore, the most important classes are in the table below to give a basic understanding about the capabilities of Catel.</text></para>
    <para styleclass="Normal"><table styleclass="Default" rowcount="6" colcount="2">
      <tr style="vertical-align:top">
        <td style="width:394px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" style="font-weight:bold;" translate="true">Class</text></para>
        </td>
        <td style="width:824px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" style="font-weight:bold;" translate="true">Description</text></para>
        </td>
      </tr>
      <tr style="vertical-align:top">
        <td style="width:394px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Catel.Argument</text></para>
        </td>
        <td style="width:824px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Check for arguments to make sure all input of your methods are correct. Lots of developers forget this important part of development, but by checking all input (and documenting it!), you make sure that your method will never result in unexpected results.</text></para>
        </td>
      </tr>
      <tr style="vertical-align:top">
        <td style="width:394px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Catel.Data.ModelBase</text></para>
        </td>
        <td style="width:824px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Base class for data objects and the </text><text styleclass="Normal (list)" style="font-style:italic;" translate="true">ViewModelBase</text><text styleclass="Normal (list)" translate="true">. This class has a special dependency-property-a-like property definition which allows both binary and xml serialization and can be saved as is to a file or memory stream.</text></para>
        </td>
      </tr>
      <tr style="vertical-align:top">
        <td style="width:394px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Catel.Data.ObservableObject</text></para>
        </td>
        <td style="width:824px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Most basic class available that supports </text><text styleclass="Normal (list)" style="font-style:italic;" translate="true">INotifyPropertyChanged</text><text styleclass="Normal (list)" translate="true">. This is the base class of all classes in Catel for the implementation of </text><text styleclass="Normal (list)" style="font-style:italic;" translate="true">INotifyPropertyChanging</text><text styleclass="Normal (list)" translate="true"> and </text><text styleclass="Normal (list)" style="font-style:italic;" translate="true">INotifyPropertyChanged</text><text styleclass="Normal (list)" translate="true">.</text></para>
        </td>
      </tr>
      <tr style="vertical-align:top">
        <td style="width:394px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Catel.IoC.ServiceLocator</text></para>
        </td>
        <td style="width:824px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">The service locator of Catel (a.k.a. IoC container). This service locator contains all the services and allows the registration and synchronization with external IoC containers (such as Unity, MEF, Castle.Windsor, etc).</text></para>
        </td>
      </tr>
      <tr style="vertical-align:top">
        <td style="width:394px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">Catel.MVVM.ViewModelBase</text></para>
        </td>
        <td style="width:824px;">
          <para styleclass="Normal (list)"><text styleclass="Normal (list)" translate="true">The base class for all view models. This class registers all services available in Catel in the </text><text styleclass="Normal (list)" style="font-style:italic;" translate="true">ServiceLocator</text><text styleclass="Normal (list)" translate="true"> and provides all the basics required for a view model in the MVVM pattern.</text></para>
        </td>
      </tr>
    </table></para>
    <para styleclass="Notes"><text styleclass="Notes" translate="true">Think another class should be listed here? Let us know!</text></para>
  </body>
</topic>
